 1.Parquet
   
   Apache Parquet是Hadoop生态圈中一种新型列式存储格式，它可以兼容Hadoop生
态圈中大多数计算框架(Mapreduce、Spark等)，被多种查询引擎支持（Hive、
Impala、Drill等），与语言和平台无关的。
   Parquet文件是以二进制方式存储的，不能直接读取的，文件中包括实际数据和元数
据，Parquet格式文件是自解析的。
   一个文件由多个行组和元数据(Footer)构成
   行组：
   写入数据时的最大缓存单元
   MR任务的最小并发单元
   一般大小在50MB-1GB 之间
   Column chunk：
   存储当前Row group内的某一列数据
   最小的IO并发单元
   Page：
   压缩、读数据的最小单元
   获得单条数据时最小的读取数据单元
   大小一般在8KB-1MB 之间，越大压缩效率越高
   Footer：
   数据Schema信息
   每个Row group的元信息：偏移量、大小
   每个Column chunk的元信息：每个列的编码格式、首页偏移量、首索引页偏移
量、个数、大小等信息
    create table if not exists uaction_parquet(
userid string,
itemid string,
behaviortype int,
geohash string,
itemcategory string,
time string)
stored as parquet;
    insert overwrite table uaction_parquet select * from uaction_text;
 
 2.文件存储格式对比测试
   
   说明：
   1).给 linux123 分配合适的资源。2core；2048M内存
   2).适当减小文件的数据量（现有数据约800W，根据自己的实际选择处理100-300W
条数据均可）
   # 检查文件行数
   wc -l uaction.dat
   #
   head -n 1000000 uaction.dat > uaction1.dat  --
   tail -n 1000000 uaction.dat > uaction2.dat
   文件压缩比
   hive (mydb)> hdfs dfs -ls /user/hive/warehouse/mydb.db/uaction*/;
   13517070 /user/hive/warehouse/mydb.db/uaction_orc/000000_1000
34867539
   /user/hive/warehouse/mydb.db/uaction_parquet/000000_1000
90019734
   /user/hive/warehouse/mydb.db/uaction_text/useraction.dat
   ORC > Parquet > text
   执行查询
   SELECT COUNT(*) FROM uaction_text;
   SELECT COUNT(*) FROM uaction_orc;
   SELECT COUNT(*) FROM uaction_parquet;
    -- text : 14.446
    -- orc: 0.15
    -- parquet : 0.146
	orc 与 parquet类似 > txt
	在生产环境中，Hive表的数据格式使用最多的有三种：TextFile、ORCFile、Parquet。
	TextFile文件更多的是作为跳板来使用(即方便将数据转为其他格式)
    有update、delete和事务性操作的需求，通常选择ORCFile
    没有事务性要求，希望支持Impala、Spark，建议选择Parquet